﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace KinectGestureRecognition.Interfaces
{
    public abstract class ColorStreamStrategy
    {
        //Todo: Implement Workingthreads for better Performance
        #region members
        private String _ColorStreamOperationName;
        #endregion

        #region Properties
        public String ColorStreamOperationName
        {
            get { return _ColorStreamOperationName; }
        }
        #endregion

        #region Methods
        public abstract void PerformColorStreamOperation();
        #endregion

        #region Delegates
        public delegate void ColorStreamOperationEvent(object sender);
        public event ColorStreamOperationEvent OnColorStreamOperation;
        public void ThrowOnColorStreamOperationEvent()
        {

            if (OnColorStreamOperation != null)
            {
                OnColorStreamOperation(this);
            }
        }
        #endregion

        #region Constructor
        protected ColorStreamStrategy(String ColorStreamOperationName)
        {
            this._ColorStreamOperationName = ColorStreamOperationName;
            Debug.WriteLine("ColorStreamOperation loaded: " + ColorStreamOperationName);
        }
        #endregion  
    }
}
